﻿#pragma once

#include "../../../Server/MirDatabase/MapInfo.h"
#include "../Control/Server.MirForms.VisualMapInfo.Control.MineEntry.h"
#include "../Control/Server.MirForms.VisualMapInfo.Control.RespawnEntry.h"
#include <any>
#include "../../../tangible_event.h"

using namespace Server::MirDatabase;

namespace Server::MirForms::VisualMapInfo::Class
{
    class VisualizerGlobal final
    {
    public:
        static TangibleEvent<EventHandler> *FocusModeActivated = new TangibleEvent<EventHandler>();

        static Cursor *Cursor;

        static void ActivateFocusMode(std::any o, EventArgs *s);

        static Server::MirDatabase::MapInfo *MapInfo;

        static int ZoomLevel; // 1 - 6

        static bool FocusMode;
        static bool getFocusModeActive();
        static void setFocusModeActive(bool value);

        static MapInfo *ActiveMap;

        static Bitmap *ClippingMap;

        static Tool SelectedTool;

        static FocusType SelectedFocusType;

        static Server::MirForms::VisualMapInfo::Control::MineEntry *FocusMineEntry;

        static Server::MirForms::VisualMapInfo::Control::RespawnEntry *FocusRespawnEntry;

    public:
        enum class Tool
        {
            Select,
            Add,
            Move,
            Resize,
            Focus
        };

    public:
        enum class FocusType
        {
            None,
            Mining,
            Respawn,
            NPC,
            SafeZone,
            Guard
        };
    };
}
